import uni from "@dcloudio/vite-plugin-uni";
import { defineConfig } from 'vite'
import path from 'node:path'
import postCssPxToRem from 'postcss-pxtorem'
import autoprefixer from 'autoprefixer'
import AutoImport from 'unplugin-auto-import/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

// https://vitejs.dev/config/
export default defineConfig({
  base: (process.env.NODE_ENV === 'production') ? "/h5/": "/",
  // base: "./",
  plugins: [
    uni(),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(__dirname, `./public/svgs`)],
      // 指定symbolId格式
      // 用<symbol>标记的作用是定义一个图像模板，使用<use>标记实例化它，然后在SVG文档中反复使用。
      // <symbol>本身不会输出任何图像，只有使用<use>实例化后才会显示。
      symbolId: 'icon-[name]',
    }),
    AutoImport({
      imports: ["vue", "vue-i18n"], // 自动导入vue和vue-i18n相关函数
      dts: "auto-imports.d.ts", // 生成 `auto-import.d.ts` 全局声明
      eslintrc: {
          enabled: false, // .eslintrc-auto-import.json
      }
  }),
  ],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
  server: {
    proxy: {
      '/api': {
        target: 'https://10.81.116.90', // icc平台地址
        secure: false,
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      }
    },
  },
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          // 自适应，px>rem转换
          rootValue: 16, // 1rem的大小
          propList: ['*'], // 需要转换的属性，这里选择全部都进行转换
        }),
        autoprefixer({
          // 自动添加前缀
          overrideBrowserslist: [
            'Android 4.1',
            'iOS 7.1',
            'Chrome > 31',
            'ff > 31',
            'ie >= 8',
            //'last 2 versions', // 所有主流浏览器最近2个版本
          ],
          grid: true,
        }),
      ],
    },
  },
  build: {
    assetsDir: 'static',
    rollupOptions: {
      external: ["EvoEmap"],
      output: {
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
        manualChunks(id: any) {
          if (id.includes('node_modules')) {
            return 'vendor' //代码分割为第三方包
          }
        },
      }
    },
    minify: "terser",
    terserOptions: {
      // 打包后移除console和注释
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    }
  }
})
